options(stringsAsFactors = FALSE)
library(devtools)
library(plyr)
library(dplyr)
library(qdap)
library(stringr)
library(xtable)
library(ggplot2)
library(plotly)
library(ggrepel)
library(neonUtilities)
# install neonNtrans if needed
# library(devtools) - needed for install_github
# install_github("NEONScience/NEON-Nitrogen-Transformations/neonNTrans", dependencies=TRUE)
library(neonNTrans)
# download soil field data #
soil_fieldL1 <- loadByProduct(dpID='DP1.10086.001', check.size = FALSE, package = 'expanded', site = 'all')
soil_fieldBgc <- soil_fieldL1$sls_bgcSubsampling
# remove unwanted fields
soil_fieldBgc <- select(soil_fieldBgc, sampleID, cnSampleID, bgcArchiveID,
bgcSampleCondition=sampleCondition, bgcDataQF)
soil_fieldCore <- soil_fieldL1$sls_soilCoreCollection
soil_fieldMoist <- soil_fieldL1$sls_soilMoisture
soil_fieldPh <- soil_fieldL1$sls_soilpH
soil_fieldVars <- soil_fieldL1$variables
# join soil field tables: core collection, moisture, pH, bgc sub-sampling
soilField <- left_join(soil_fieldCore, soil_fieldMoist, by=c('sampleID', 'domainID', 'siteID', 'namedLocation', 'plotID', 'collectDate', 'horizon', 'sampleCode') ) %>%
select(-uid.x, -uid.y, -samplingProtocolVersion.y)
soilField <- left_join(soilField, soil_fieldPh, by=c('sampleID', 'sampleCode', 'domainID', 'siteID',
'plotID', 'namedLocation', 'collectDate')) %>%
select(-uid, -boatMass, -freshMassBoatMass, -dryMassBoatMass, -pHSoilInWaterMass, -pHWaterVol,
-pHSoilInCaClMass, -pHCaClVol, -pHSampleID)
soilField <- left_join(soilField, soil_fieldBgc, by=c('sampleID') )
# download soil chem and isotope data #
soil_chemL1 <- loadByProduct(dpID='DP1.10078.001', check.size = FALSE,package = 'basic', site = 'all')
soil_chem <- soil_chemL1$sls_soilChemistry %>%
select(sampleID, cnSampleID, sampleType,acidTreatment, nitrogenPercent, organicCPercent,
CNratio, cnPercentQF, percentAccuracyQF, analyticalRepNumber, cnRemarks=remarks,
cnLaboratoryName=laboratoryName, cnTestMethod=testMethod, cnInstrument=instrument,
cnDataQF=dataQF)
soil_isoL1 <- loadByProduct(dpID='DP1.10100.001', check.size = FALSE,package = 'basic', site = 'all')
soil_iso <- soil_isoL1$sls_soilStableIsotopes %>%
select(sampleID, cnSampleID, d15N, organicd13C, cnIsotopeQF, isotopeAccuracyQF,
isoRemarks=remarks, isoLaboratoryName=laboratoryName, isoTestMethod=testMethod,
isoInstrument=instrument, isoAnalyticalRepNumber=analyticalRepNumber,
isoDataQF=dataQF)
# N transformation rate measurements
soil_NtransL1 <- loadByProduct(dpID='DP1.10080.001', check.size = FALSE,package = 'basic', site = 'all')
soilNtrans <- def.calc.ntrans(kclInt = soil_NtransL1$ntr_internalLab,
kclIntBlank = soil_NtransL1$ntr_internalLabBlanks,
kclExt = soil_NtransL1$ntr_externalLab,
soilMoist = soil_NtransL1$sls_soilMoisture, dropFlagged = TRUE)
# remove duplicate records
soilNtransNoDupes <- soilNtrans[!duplicated(soilNtrans$sampleID), ]
# join soil chem data tables: soil chem, soil isotopes, N transformation
soilChem <- left_join(soil_chem, soil_iso, by=c('sampleID', 'cnSampleID'))
soilChem <- left_join(soilChem, soilNtrans, by=c('sampleID'))
# join soil chem and field data tables
soilFieldChem <- left_join(soilField, soilChem, by=c('sampleID', 'cnSampleID') )
# download metagenomics data #
#soil_mmsL1 <- loadByProduct(dpID='DP1.10107.001', check.size = FALSE,package = 'expanded')
#soil_mmsRaw <- soil_mmsL1$mms_rawDataFiles
#soil_mmsSeq <- soil_mmsL1$mms_metagenomeSequencing
#soil_mmsVars <- soil_mmsL1$variables
# join metagenomics tables
# remove duplicate dnaSampleID's from raw sequencing table
#soil_mmsRawNoDupes <- soil_mmsRaw[!duplicated(soil_mmsRaw$dnaSampleID), ]
#mmsDat <- left_join(soil_mmsRawNoDupes, soil_mmsSeq, by=c('dnaSampleID', 'domainID', 'siteID', #'namedLocation', 'laboratoryName', 'sequencingFacilityID') ) %>%
# select(-uid.x, -uid.y) %>%
# rename(internalLabIDraw=internalLabID.x, internalLabIDseq=internalLabID.y)
## NOTE: To JOIN METAGENOMICS DATA REQUIRES EITHER EXPANDING THE MMS DATA OR AVERAGING THE SOIL FIELD
# DATA. SOIL FIELD DATA ARE AT THE SUBPLOT LEVEL, METAGENOMICS DATA ARE AT THE PLOT LEVEL ##
#### moisture ####
hasMoisture <- !is.na(soilField$soilMoisture)
moistureSummary <- data.frame(soilField[hasMoisture, ] %>% group_by(siteID) %>%
summarise(meansoilMoisture=mean(soilMoisture)) )
dat <- xtable(moistureSummary)
print(dat, type = "html")
## <!-- html table generated in R 3.6.3 by xtable 1.8-4 package -->
## <!-- Fri Sep 4 15:58:25 2020 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilMoisture </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 0.81 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.73 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 1.99 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 0.19 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> BONA </td> <td align="right"> 1.27 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CLBJ </td> <td align="right"> 0.21 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> CPER </td> <td align="right"> 0.05 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DCFS </td> <td align="right"> 0.22 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DEJU </td> <td align="right"> 0.92 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DELA </td> <td align="right"> 0.41 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> DSNY </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GRSM </td> <td align="right"> 1.03 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> GUAN </td> <td align="right"> 0.22 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HARV </td> <td align="right"> 1.08 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> HEAL </td> <td align="right"> 6.04 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> JERC </td> <td align="right"> 0.09 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> JORN </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> KONA </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> KONZ </td> <td align="right"> 0.25 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> LAJA </td> <td align="right"> 0.31 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> LENO </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> MLBS </td> <td align="right"> 0.78 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> MOAB </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> NIWO </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> NOGP </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> OAES </td> <td align="right"> 0.15 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> ONAQ </td> <td align="right"> 0.07 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> ORNL </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> OSBS </td> <td align="right"> 0.42 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> RMNP </td> <td align="right"> 0.58 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> SCBI </td> <td align="right"> 0.32 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SERC </td> <td align="right"> 0.46 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SJER </td> <td align="right"> 0.02 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> SOAP </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> SRER </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> STEI </td> <td align="right"> 1.37 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> STER </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> TALL </td> <td align="right"> 0.17 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> TEAK </td> <td align="right"> 0.10 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> TREE </td> <td align="right"> 0.97 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> UKFS </td> <td align="right"> 0.30 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> UNDE </td> <td align="right"> 1.90 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> WOOD </td> <td align="right"> 0.36 </td> </tr>
## <tr> <td align="right"> 44 </td> <td> WREF </td> <td align="right"> 0.57 </td> </tr>
## <tr> <td align="right"> 45 </td> <td> YELL </td> <td align="right"> 0.21 </td> </tr>
## </table>
#### temp ####
hasTemp <- !is.na(soilField$soilTemp)
tempSummary <- data.frame(soilField[hasTemp, ] %>% group_by(siteID) %>%
summarise(meansoilTemp=mean(soilTemp)) )
dat <- xtable(moistureSummary)
print(dat, type = "html")
## <!-- html table generated in R 3.6.3 by xtable 1.8-4 package -->
## <!-- Fri Sep 4 15:58:25 2020 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilMoisture </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 0.81 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.73 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 1.99 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 0.19 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> BONA </td> <td align="right"> 1.27 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CLBJ </td> <td align="right"> 0.21 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> CPER </td> <td align="right"> 0.05 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DCFS </td> <td align="right"> 0.22 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DEJU </td> <td align="right"> 0.92 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DELA </td> <td align="right"> 0.41 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> DSNY </td> <td align="right"> 0.28 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GRSM </td> <td align="right"> 1.03 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> GUAN </td> <td align="right"> 0.22 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HARV </td> <td align="right"> 1.08 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> HEAL </td> <td align="right"> 6.04 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> JERC </td> <td align="right"> 0.09 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> JORN </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> KONA </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> KONZ </td> <td align="right"> 0.25 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> LAJA </td> <td align="right"> 0.31 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> LENO </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> MLBS </td> <td align="right"> 0.78 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> MOAB </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> NIWO </td> <td align="right"> 0.24 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> NOGP </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> OAES </td> <td align="right"> 0.15 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> ONAQ </td> <td align="right"> 0.07 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> ORNL </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> OSBS </td> <td align="right"> 0.42 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> RMNP </td> <td align="right"> 0.58 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> SCBI </td> <td align="right"> 0.32 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SERC </td> <td align="right"> 0.46 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SJER </td> <td align="right"> 0.02 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> SOAP </td> <td align="right"> 0.26 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> SRER </td> <td align="right"> 0.03 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> STEI </td> <td align="right"> 1.37 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> STER </td> <td align="right"> 0.37 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> TALL </td> <td align="right"> 0.17 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> TEAK </td> <td align="right"> 0.10 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> TREE </td> <td align="right"> 0.97 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> UKFS </td> <td align="right"> 0.30 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> UNDE </td> <td align="right"> 1.90 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> WOOD </td> <td align="right"> 0.36 </td> </tr>
## <tr> <td align="right"> 44 </td> <td> WREF </td> <td align="right"> 0.57 </td> </tr>
## <tr> <td align="right"> 45 </td> <td> YELL </td> <td align="right"> 0.21 </td> </tr>
## </table>
#### pH ####
haspH <- !is.na(soilField$soilInCaClpH)
pHSummary <- data.frame(soilField[haspH, ] %>% group_by(siteID) %>%
summarise(meansoilpH=mean(soilInCaClpH)) )
dat <- xtable(pHSummary)
print(dat, type = "html")
## <!-- html table generated in R 3.6.3 by xtable 1.8-4 package -->
## <!-- Fri Sep 4 15:58:25 2020 -->
## <table border=1>
## <tr> <th> </th> <th> siteID </th> <th> meansoilpH </th> </tr>
## <tr> <td align="right"> 1 </td> <td> ABBY </td> <td align="right"> 4.38 </td> </tr>
## <tr> <td align="right"> 2 </td> <td> BARR </td> <td align="right"> 4.52 </td> </tr>
## <tr> <td align="right"> 3 </td> <td> BART </td> <td align="right"> 3.32 </td> </tr>
## <tr> <td align="right"> 4 </td> <td> BLAN </td> <td align="right"> 5.23 </td> </tr>
## <tr> <td align="right"> 5 </td> <td> CLBJ </td> <td align="right"> 5.79 </td> </tr>
## <tr> <td align="right"> 6 </td> <td> CPER </td> <td align="right"> 6.23 </td> </tr>
## <tr> <td align="right"> 7 </td> <td> DCFS </td> <td align="right"> 6.50 </td> </tr>
## <tr> <td align="right"> 8 </td> <td> DEJU </td> <td align="right"> 4.48 </td> </tr>
## <tr> <td align="right"> 9 </td> <td> DELA </td> <td align="right"> 6.53 </td> </tr>
## <tr> <td align="right"> 10 </td> <td> DSNY </td> <td align="right"> 3.58 </td> </tr>
## <tr> <td align="right"> 11 </td> <td> GRSM </td> <td align="right"> 3.63 </td> </tr>
## <tr> <td align="right"> 12 </td> <td> GUAN </td> <td align="right"> 7.35 </td> </tr>
## <tr> <td align="right"> 13 </td> <td> HARV </td> <td align="right"> 3.40 </td> </tr>
## <tr> <td align="right"> 14 </td> <td> HEAL </td> <td align="right"> 5.21 </td> </tr>
## <tr> <td align="right"> 15 </td> <td> JERC </td> <td align="right"> 4.90 </td> </tr>
## <tr> <td align="right"> 16 </td> <td> KONA </td> <td align="right"> 5.75 </td> </tr>
## <tr> <td align="right"> 17 </td> <td> KONZ </td> <td align="right"> 6.68 </td> </tr>
## <tr> <td align="right"> 18 </td> <td> LAJA </td> <td align="right"> 6.20 </td> </tr>
## <tr> <td align="right"> 19 </td> <td> LENO </td> <td align="right"> 4.50 </td> </tr>
## <tr> <td align="right"> 20 </td> <td> MLBS </td> <td align="right"> 3.23 </td> </tr>
## <tr> <td align="right"> 21 </td> <td> MOAB </td> <td align="right"> 7.56 </td> </tr>
## <tr> <td align="right"> 22 </td> <td> NIWO </td> <td align="right"> 4.34 </td> </tr>
## <tr> <td align="right"> 23 </td> <td> NOGP </td> <td align="right"> 6.46 </td> </tr>
## <tr> <td align="right"> 24 </td> <td> OAES </td> <td align="right"> 7.37 </td> </tr>
## <tr> <td align="right"> 25 </td> <td> ONAQ </td> <td align="right"> 7.65 </td> </tr>
## <tr> <td align="right"> 26 </td> <td> ORNL </td> <td align="right"> 4.17 </td> </tr>
## <tr> <td align="right"> 27 </td> <td> OSBS </td> <td align="right"> 3.93 </td> </tr>
## <tr> <td align="right"> 28 </td> <td> RMNP </td> <td align="right"> 4.82 </td> </tr>
## <tr> <td align="right"> 29 </td> <td> SCBI </td> <td align="right"> 5.48 </td> </tr>
## <tr> <td align="right"> 30 </td> <td> SERC </td> <td align="right"> 4.57 </td> </tr>
## <tr> <td align="right"> 31 </td> <td> SJER </td> <td align="right"> 5.27 </td> </tr>
## <tr> <td align="right"> 32 </td> <td> SOAP </td> <td align="right"> 5.17 </td> </tr>
## <tr> <td align="right"> 33 </td> <td> SRER </td> <td align="right"> 6.50 </td> </tr>
## <tr> <td align="right"> 34 </td> <td> STEI </td> <td align="right"> 4.40 </td> </tr>
## <tr> <td align="right"> 35 </td> <td> STER </td> <td align="right"> 6.61 </td> </tr>
## <tr> <td align="right"> 36 </td> <td> TALL </td> <td align="right"> 4.14 </td> </tr>
## <tr> <td align="right"> 37 </td> <td> TEAK </td> <td align="right"> 4.46 </td> </tr>
## <tr> <td align="right"> 38 </td> <td> TREE </td> <td align="right"> 4.39 </td> </tr>
## <tr> <td align="right"> 39 </td> <td> UKFS </td> <td align="right"> 5.93 </td> </tr>
## <tr> <td align="right"> 40 </td> <td> UNDE </td> <td align="right"> 4.21 </td> </tr>
## <tr> <td align="right"> 41 </td> <td> WOOD </td> <td align="right"> 7.01 </td> </tr>
## <tr> <td align="right"> 42 </td> <td> WREF </td> <td align="right"> 4.05 </td> </tr>
## <tr> <td align="right"> 43 </td> <td> YELL </td> <td align="right"> 5.39 </td> </tr>
## </table>
*****JEFFS NEW SECTIONS*****
forest %>%
filter(nlcdClass == "evergreenForest") %>%
ggplot(aes(x=siteID, y=soilTemp, fill = nlcdClass)) +
geom_boxplot() +
ylim(c(-20, 50)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Evergreen Forested Plots')
## Warning: Removed 42 rows containing non-finite values (stat_boxplot).
forest %>%
filter(nlcdClass == "evergreenForest") %>%
ggplot(aes(x=siteID, y=soilMoisture, fill = nlcdClass)) +
geom_boxplot() +
ylim(c(-1, 10)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Evergreen Forested Plots')
## Warning: Removed 108 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
group_by(siteID, nlcdClass) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = nlcdClass)) +
geom_point() +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
ggplotly(g1)
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = siteID, label = siteID)) +
geom_point() + geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
g1
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, color = siteID, label = siteID)) +
geom_point() + geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 4)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Forested Plots')
g1
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM")) %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, label = siteID)) +
geom_point() +
geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
xlim(c(0, 1.5)) +
ylim(c(0, 30)) +
ggtitle('Soil Moisture x Temperatue Decidious Forested Plots')
g1
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM")) %>%
filter(nlcdClass == "evergreenForest") %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilMoisture, y=mean_soilTemp, label = siteID)) +
geom_point(color = "darkgreen") +
geom_label_repel(aes(label = siteID),
box.padding = 0.35,
point.padding = 0.5,
segment.color = 'grey50') +
xlim(c(0, 1)) +
ylim(c(0, 30)) +
xlab("Mean Soil Moisture (%) ") +
ylab("Mean Soil Temperature (°C)")
# ggtitle('Soil Moisture x Temperatue Evergreen Forested Plots')
g1
## Warning: Removed 2 rows containing missing values (geom_point).
## Warning: Removed 2 rows containing missing values (geom_label_repel).
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=reorder(siteID, soilTemp, mean), y=soilTemp)) +
geom_boxplot() +
ylim(c(-1, 35)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Temperature Plots')
g1
## Warning: Removed 7 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(nlcdClass == "deciduousForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=siteID, y=soilMoisture)) +
geom_boxplot() +
ylim(c(-1, 5)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Moisture Plots')
g1
## Warning: Removed 61 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(nlcdClass == "evergreenForest") %>%
filter(sampleTiming == "peakGreenness")
g1 <- ggplot(forest_sub, aes(x=siteID, y=soilMoisture)) +
geom_boxplot() +
ylim(c(-1, 5)) +
theme(axis.text.x = element_text(angle=45) ) +
ggtitle('Forest Soil Moisture Plots')
g1
## Warning: Removed 24 rows containing non-finite values (stat_boxplot).
forest_sub <- forest %>%
filter(siteID %in% c("HARV", "SCBI", "JERC", "GUAN", "UNDE", "UKFS", "MLBS", "TALL", "DCFS", "STER", "CLBJ", "MOAB", "NIWO", "JORN", "WREF", "SJER", "TOOL", "BONA", "PUUM", "ONAQ", "YELL")) %>%
filter(sampleTiming == "peakGreenness") %>%
group_by(siteID, nlcdClass) %>%
summarise(mean_soilMoisture = mean(soilMoisture, na.rm = TRUE),
mean_soilTemp = mean(soilTemp, na.rm = TRUE))
g1 <- ggplot(forest_sub, aes(x=mean_soilTemp, y=mean_soilMoisture, color = nlcdClass, label = siteID)) +
geom_point() +
# geom_text(aes(label=siteID),hjust=-0.2, vjust=0.5) +
geom_label_repel(aes(label = siteID),
box.padding = 0.35,
point.padding = 0.5,
segment.color = 'grey50') +
xlim(0, 30) +
ylab("Mean Soil Moisture (%) ") +
xlab("Mean Soil Temperature (°C)") +
facet_wrap(~nlcdClass)
# ggtitle('Soil Moisture x Temperatue Evergreen Forested Plots')
g1
## Warning: Removed 3 rows containing missing values (geom_point).
## Warning: Removed 3 rows containing missing values (geom_label_repel).